package org.Top101.BM1_linked_list;

/**
 * @Auther: qingle
 * @Date: 2024/8/25-4:24
 * @Description:
 *
 * @version: 1.0
 */


public class BM2_链表内指定区间反转 {

	public class ListNode{
		int val;
		ListNode next = null;
		public ListNode(int val) {
			this.val = val;
		}
	}
	public ListNode reverseBetween (ListNode head, int m, int n) {
		//加个表头 fast-template
		ListNode res = new ListNode(-1);
		res.next = head;
		//前序节点
		ListNode pre = res;
		//当前节点
		ListNode cur = head;
		//找到m
		for (int i = 1; i < m; i++) {
			pre = cur;
			cur = cur.next;
		}
		//从m反转到n
		for (int i = m; i < n; i++) {
			ListNode temp = cur.next;
			cur.next = temp.next;
			temp.next = pre.next;
			pre.next = temp;
		}
		//返回去掉表头
		return res.next;}
}
